#ifndef MY_COMPLEX_H
#define MY_COMPLEX_H

#include <iostream>
#include <cmath>

using namespace std;

class my_Complex         // класс "Комплексное число"
{
private:
  double re, im;      // действительная и мнимая части

public:
  // конструкторы

  my_Complex ()
  {
  };

  my_Complex (double r)
  {
    re = r;
    im = 0;
  }

  my_Complex (double r, double i)
  {
    re = r;
    im = i;
  }

  my_Complex (const my_Complex &c)   // конструктор копирования
  {
    re = c.re;
    im = c.im;
  }

  // деструктор
  ~my_Complex ()
  {
  }
  // Модуль
    double module ()
    {
      return sqrt (re * re + im * im);
    }
 my_Complex& operator = (my_Complex &c)
      {
        re = c.re;
        im = c.im;

        return (*this);
      }
 // сложение
   my_Complex operator + (const my_Complex &c)
   {
     return my_Complex (re + c.re, im + c.im);
   }

   // вычитание
   my_Complex operator - (const my_Complex &c)
   {
     return my_Complex(re - c.re, im - c.im);
   }

   // умножение
   my_Complex operator * (const my_Complex &c)
   {
     return my_Complex(re * c.re - im * c.im, re * c.im + im * c.re);
   }

   // деление
   my_Complex operator / (const my_Complex &c)
   {
     my_Complex temp;

     double r = c.re * c.re + c.im * c.im;
     temp.re = (re * c.re + im * c.im) / r;
     temp.im = (im * c.re - re * c.im) / r;

     return temp;
   }

#endif // MY_COMPLEX_H
